import { ReactElement } from 'react'
import { GlobalConstant } from '@/library/constants/globalConstant'

export interface IRoutesItem {
  path: string;
  component: ReactElement;
  /** 是否是首页.针对主路由下面的二级路由. 仅首个设置的优先级最高且生效 */
  index?: boolean;
  /** 如果都未设置 `index: true`, 则第一个默认为 `true`. 需开启 - 仅对直接子children生效 */
  openDefaultIndex?: boolean;
  /** 是否需认证后才可访问. 子级未设置则使用父级规则 */
  auth?: boolean;
  /** 重定向地址 */
  redirect?: string;
  /** 子路由 */
  children?: IRoutesItem[];
}

export type IRoutesItemLists = IRoutesItem[]

type AddPrefix<T, Prefix extends string> = {
  [K in keyof T as `${Prefix}${string & K}`]: T[K];
};

export type AddSpecialPrefix<T> = T & AddPrefix<T, typeof GlobalConstant.PREFIX_FULLPATH> & {
  basePagePath: string;
}
